home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / fb386 / sai64 / sa64main.bas < prev    next >
BASIC Source File  |  1993-11-30  |  11KB  |  275 lines

  1. 1 '*******変数表(一部)******** 
  2. 2 '『LOOP%,LOOP2%,LOOP3%,LOOP$-各階層のル-プ用』『PL-プレイヤ-ナンバ』       『PLA,SZE$,LEV$,PON$-モ-ド選択用』『OV,BL,LE,RI-上下左右』                 『T1,T2,TC-総合得点』『KT1,KT2,KT3-コンピュ-タの思考用仮合計』
  3. 3 '『STA-ステ-ジ』『ME-サイコロの目』『PL-プレイヤ-1,2』                     『P1T,P2T-プレイヤ-1,2の勝った回数』『PUS-コンピュ-タがパワ-を使用         するかどうか(0なら使用)』
  4. 10 CLS 0:CONSOLE 23,2:DIM XY(10,10):PON$="ON":PZOUKA1%=1:PZOUKA2%=1
  5. 20 LOCATE 30,1:PRINT"****ル-ル 説明****"
  6. 30 LOCATE 10,3:PRINT"さいころ を 振る・・・パッド の Aボタン を 押す"
  7. 40 LOCATE 10,4:PRINT"POWER ON ・・・A と B を 一緒 に 押す"
  8. 50 LOCATE 10,5:PRINT"座標 の 移動    ・・・パッド の 方向キ- で 移動" 
  9. 60 LOCATE 10,6:PRINT"空いている場所ならどこでも置ける"
  10. 70 LOCATE 30,8:PRINT"****得点 説明****"
  11. 80 LOCATE 10,10:PRINT"隣が1つ違いの数字1つに付き+1点(1と6は"                              "1つ違いとする)"
  12. 90 LOCATE 10,11:PRINT"隣が同じ数字1つに付き-1点"
  13. 100 LOCATE 10,12:PRINT"隣に同じ或いは1つ違いの数字が無い時は-3点"
  14. 110 LOCATE 30,14:PRINT"****POWER 使用****"
  15. 120 LOCATE 10,16:PRINT"消費点数・・・(POWER-1)*2  (但しPOWERが1の時は"                               "1点消費)"
  16. 130 LOCATE 30,17:PRINT"それまでの点数から引かれる"
  17. 140 LOCATE 10,18:PRINT"得点    ・・・その時得た点数*POWER"
  18. 150 LOCATE 45,20:PRINT"リタ-ンキ-を押して下さい"
  19. 160 LOOP$="A":WHILE LOOP$="A":LOCATE 71,20:LOOP$=INPUT$(1):WEND
  20. 170 LOCATE 30,1: PRINT"NORMAL OR STAZE":SZE$=""
  21. 180 CLS 0
  22. 190 LOOP%=1:WHILE LOOP%
  23. 200   LOCATE 10,2:PRINT"INPUT (N) OR (S)"
  24. 210   SZE$=INPUT$(1)
  25. 220   IF SZE$="N" OR SZE$="S" THEN LOOP%=0
  26. 230 WEND
  27. 240 IF SZE$="S" THEN LOOP%=1
  28. 250 LOOP%=LOOP%:WHILE LOOP%
  29. 260   LOCATE 30,3:PRINT"V-EASY OR EASY OR NORMAL OR HARD":LEV$=""
  30. 270   LOOP2%=1:WHILE LOOP2%
  31. 280     LOCATE 10,4:PRINT"INPUT (V) OR (E) OR (N) OR (H)"
  32. 290     LEV$=INPUT$(1)
  33. 300     IF LEV$="V" OR LEV$="E" OR LEV$="N" OR LEV$="H" THEN LOOP2%=0
  34. 310   WEND
  35. 320   TC=0:T1=0:T2=0:LOOP%=0
  36. 330   IF LEV$="V" THEN GOSUB *STAZEA ELSE GOSUB *STAZEB:SYSTEM:END
  37. 340 WEND 
  38. 350 CLS 0:LOCATE 30,2
  39. 360 PRINT"1 PLAYER  OR  2 PLAYER"
  40. 370 PLA=0:TC=0
  41. 380 LOOP%=1 :WHILE LOOP%
  42. 390   LOCATE 10,3 :PRINT"INPUT (1) OR (2)"
  43. 400   INPUT PLA
  44. 410   IF PLA=1 OR PLA=2 THEN LOOP%=0
  45. 420 WEND 
  46. 430 LOOP%=1:WHILE LOOP%
  47. 440   LOCATE 10,5:PRINT"何本勝負(1~7)":INPUT MEN
  48. 450   LOCATE 30,6:PRINT"SELECT STILE" 
  49. 460   LOCATE 10,7:PRINT"INPUT (1)~(17)+(18)~(38)"
  50. 470   LOCATE 1,8:DIM STIN(9)
  51. 480   FOR STIL=1 TO MEN:PRINT STIL"本目"
  52. 490   LOOP2%=1:WHILE LOOP2%
  53. 500     INPUT STIN(STIL)
  54. 510     IF STIN(STIL)>0 OR STIN(STIL)<39 THEN LOOP2%=0
  55. 520   WEND
  56. 530   NEXT STIL:LOOP%=0:WEND
  57. 540   GOSUB *PPPLAY 
  58. 550 SYSTEM: END
  59. 560 *MAIN
  60. 570 OPEN "I",#1,"S64DAT.dat"
  61. 580 GYOU%=STA*40
  62. 590 INPUT #1 ,GYO%
  63. 600 IF GYOU%>GYO% OR GYOU%<GYO% THEN GOTO 590
  64. 610 INPUT#1,STA,M,XY(0,0),XY(1,0),XY(2,0),XY(3,0),XY(4,0),XY(5,0),XY(6,0),      XY(7,0),XY(8,0),XY(9,0),XY(0,1),XY(1,1),XY(2,1),XY(3,1),XY(4,1),            XY(5,1),XY(6,1),XY(7,1),XY(8,1),XY(9,1),XY(0,2),XY(1,2),XY(2,2),            XY(3,2),XY(4,2)
  65. 620 INPUT#1,GYO%,XY(5,2),XY(6,2),XY(7,2),XY(8,2),XY(9,2),XY(0,3),XY(1,3),       XY(2,3),XY(3,3),XY(4,3),XY(5,3),XY(6,3),XY(7,3),XY(8,3),XY(9,3),            XY(0,4),XY(1,4),XY(2,4),XY(3,4),XY(4,4),XY(5,4),XY(6,4),XY(7,4),            XY(8,4),XY(9,4)
  66. 630 INPUT#1,GYO%,XY(0,5),XY(1,5),XY(2,5),XY(3,5),XY(4,5),XY(5,5),XY(6,5),       XY(7,5),XY(8,5),XY(9,5),XY(0,6),XY(1,6),XY(2,6),XY(3,6),XY(4,6),            XY(5,6),XY(6,6),XY(7,6),XY(8,6),XY(9,6),XY(0,7),XY(1,7),XY(2,7),            XY(3,7),XY(4,7) 
  67. 640 INPUT#1,GYO%,XY(5,7),XY(6,7),XY(7,7),XY(8,7),XY(9,7),XY(0,8),XY(1,8),       XY(2,8),XY(3,8),XY(4,8),XY(5,8),XY(6,8),XY(7,8),XY(8,8),XY(9,8),            XY(0,9),XY(1,9),XY(2,9),XY(3,9),XY(4,9),XY(5,9),XY(6,9),XY(7,9),            XY(8,9),XY(9,9)
  68. 650 CLOSE#1
  69. 660 CLS 1
  70. 670 FOR Y=0 TO 9
  71. 680   FOR X=0 TO 9
  72. 690     IF XY(X,Y)=12 THEN LOCATE 2*X+6,Y+8:PRINT "*"
  73. 700   NEXT X
  74. 710 NEXT Y
  75. 720 SYMBOL(64,148),"1 2 3 4 5 6 7 8",1,1,2
  76. 730 SYMBOL(48,173),"A",1,1,2
  77. 740 FOR N=66 TO 72 :C$=CHR$(N):SYMBOL STEP(0,19),C$,1,1,2:NEXT N
  78. 750 FOR X=60 TO 188 STEP 16
  79. 760   LINE(X,169)-(X,321),PSET,2
  80. 770 NEXT X
  81. 780 FOR Y=169 TO 321 STEP 19
  82. 790   LINE(60,Y)-(188,Y),PSET,2
  83. 800 NEXT Y
  84. 810 COLOR 4: LOCATE 40,7:PRINT"STILE "STA:COLOR 7
  85. 820 T1=0:T2=0:PW=0:POWER=0
  86. 830 N=0:WHILE N<M
  87. 840   IF PON$="ON" THEN PW=PW+PZOUKA1%:LOCATE 60,5:PRINT"POWER="PW
  88. 850   LOCATE 5,23:PRINT"PLAYER 1"
  89. 860   FOR LOOP%=0 TO 3000 :NEXT LOOP%
  90. 870   CLS 1
  91. 880   LOOP%=1:WHILE LOOP% :PT=PTRIG(1)
  92. 890     IF PT=1 THEN LOOP%=0
  93. 900     IF PON$="ON" THEN IF PT=3 THEN T1=T1-PW*2+2:POWER=PW:LOOP%=0
  94. 910     IF PT=1 THEN SYMBOL(480,110),"POWER ON",1,1,0
  95. 920     IF PON$="ON" THEN IF PT=3 THEN SYMBOL(480,110),"POWER ON",1,1,6
  96. 930   WEND
  97. 940   PL=1
  98. 950   GOSUB *RANSUU
  99. 960   GOSUB *HANTEI1
  100. 970   GOSUB *HANTEI2
  101. 980   LOCATE 60,1:PRINT "PLAYER1=" T1
  102. 990   IF PON$="ON" THEN  PW=PW+PZOUKA2%: LOCATE 60,5:PRINT"POWER="PW
  103. 1000   LOCATE 5,23:PRINT"PLAYER 2"
  104. 1010   CLS 1
  105. 1020   IF PLA=1 THEN PT=0:PL=2:KAI=0:LOOP%=0 ELSE LOOP%=1
  106. 1030   LOOP%=LOOP%:WHILE LOOP%
  107. 1040     LOOP2%=1:WHILE LOOP2%:PT=PTRIG(2) 
  108. 1050       IF PT=1 THEN LOOP2%=0
  109. 1060       IF PON$="ON" THEN IF PT=3 THEN T2=T2-PW*2+2:POWER=PW:LOOP2%=0
  110. 1070       IF PT=1 THEN SYMBOL(480,110),"POWER ON",1,1,0
  111. 1080       IF PON$="ON" THEN IF PT=3 THEN SYMBOL(480,110),"POWER ON",1,1,6
  112. 1090     WEND
  113. 1100     PL=2
  114. 1110     GOSUB *RANSUU
  115. 1120     GOSUB *HANTEI1
  116. 1130     GOSUB *HANTEI2
  117. 1140     LOCATE 60,3:PRINT "PLAYER2=" T2
  118. 1150     FOR LOOP2%=0 TO 3000 :NEXT LOOP2%:LOOP%=0
  119. 1160   WEND 
  120. 1170   IF PLA=2 THEN LOOP%=0 ELSE LOOP%=1
  121. 1180   LOOP%=LOOP%:WHILE LOOP%
  122. 1190     KT=0:KX=0:KY=0:PUS=0
  123. 1200     IF PON$="ON" THEN LOOP2%=1 ELSE LOOP2%=0
  124. 1210     LOOP2%=LOOP2%:WHILE LOOP2%
  125. 1220       IF TC-T1>2*PW+4*M-4*N-2 THEN PUS=1
  126. 1230       IF TC-T1>0 AND N=M-1 THEN PUS=1 
  127. 1240       IF PW<3 THEN PUS=1
  128. 1250       IF PUS ELSE GOSUB *SIYOU
  129. 1260       KT=0
  130. 1270       IF PUS=0 THEN POWER=PW:PT=3:SYMBOL(480,110),"POWER ON",1,1,6
  131. 1280       IF PUS=1 THEN SYMBOL(480,110),"POWER ON",1,1,0
  132. 1290       IF PUS=0 THEN TC=TC-PW*2+2
  133. 1300       LOOP2%=0
  134. 1310     WEND:LOOP%=0
  135. 1320   WEND 
  136. 1330   RANDOMIZE TIME
  137. 1340   ME=INT(RND*6+1):
  138. 1350   LOCATE 60,23 :PRINT ME
  139. 1360   FOR X=1 TO 8 STEP 1
  140. 1370     FOR Y=1 TO 8 STEP 1
  141. 1380       IF XY(X,Y)=0 THEN GOSUB *HANTEI1
  142. 1390       IF KAI=0 AND XY(X,Y)=0 THEN KT=T:KX=X:KY=Y:KAI=1
  143. 1400       IF XY(X,Y)=0 AND T>KT THEN KT=T:KX=X:KY=Y
  144. 1410     NEXT Y
  145. 1420   NEXT X
  146. 1430   X=KX:Y=KY:T=KT
  147. 1440   GOSUB *HANTEI2
  148. 1450   TC=TC+T
  149. 1460   LOCATE 60,3:PRINT "PLAYER2="TC
  150. 1470   N=N+1
  151. 1480 WEND
  152. 1490 IF LEV$="V" THEN RETURN 2280
  153. 1500 IF LEV$="E" THEN RETURN 2560
  154. 1510 IF LEV$="N" THEN RETURN 2630
  155. 1520 IF LEV$="H" THEN RETURN 2700
  156. 1530 RETURN 2420
  157. 1540 *RANSUU
  158. 1550   RANDOMIZE TIME
  159. 1560   ME=INT(RND*6+1)
  160. 1570   LOCATE 50,23: PRINT"サイコロの目"ME
  161. 1580   LOCATE 10,1:PRINT"INPUT X,Y":X=5:Y=5:PPT=PT
  162. 1590   FOR LOOP%=0 TO 2000 :NEXT LOOP%
  163. 1600   LOOP%=1:WHILE LOOP%
  164. 1610     Y$=CHR$(Y+64)
  165. 1620     LOCATE 20,1:PRINT"座標 ("X","Y$")"
  166. 1630     IF PL=1 AND PTRIG(1)=2 THEN LOOP%=0
  167. 1640     IF PL=2 AND PTRIG(2)=2 THEN LOOP%=0
  168. 1650     IF PL=1 THEN AD=PAD(1) ELSE AD=PAD(2)
  169. 1660     IF AD=1 AND Y>1 THEN Y=Y-1
  170. 1670     IF AD=2 AND Y>1 AND X<8 THEN Y=Y-1:X=X+1
  171. 1680     IF AD=8 AND Y>1 AND X>1 THEN Y=Y-1:X=X-1
  172. 1690     IF AD=3 AND X<8 THEN X=X+1
  173. 1700     IF AD=7 AND X>1 THEN X=X-1
  174. 1710     IF AD=4 AND X<8 AND Y<8 THEN X=X+1:Y=Y+1
  175. 1720     IF AD=6 AND X>1 AND Y<8 THEN X=X-1:Y=Y+1
  176. 1730     IF AD=5 AND Y<8 THEN Y=Y+1
  177. 1740     FOR LOOP2%=0 TO 450 :NEXT LOOP2%
  178. 1750     IF XY(X,Y)>0 THEN LOOP%=1
  179. 1760   WEND
  180. 1770 RETURN
  181. 1780 *HANTEI1
  182. 1790   T=0:K=0
  183. 1800   LE=XY(X-1,Y):RI=XY(X+1,Y):OV=XY(X,Y-1):BL=XY(X,Y+1)
  184. 1810    IF LE=ME THEN T=T-1 ELSE K=K-1
  185. 1820    IF RI=ME THEN T=T-1 ELSE K=K-1
  186. 1830    IF OV=ME THEN T=T-1 ELSE K=K-1
  187. 1840    IF BL=ME THEN T=T-1 ELSE K=K-1 
  188. 1850   LEF=ABS(LE-ME):RIG=ABS(RI-ME)
  189. 1860   OVE=ABS(OV-ME):BLO=ABS(BL-ME)
  190. 1870    IF (LEF=1 OR LEF=5)AND(LE>0) THEN T=T+1 ELSE K=K-1
  191. 1880    IF (RIG=1 OR RIG=5)AND(RI>0) THEN T=T+1 ELSE K=K-1
  192. 1890    IF (OVE=1 OR OVE=5)AND(OV>0) THEN T=T+1 ELSE K=K-1
  193. 1900    IF (BLO=1 OR BLO=5)AND(BL>0) THEN T=T+1 ELSE K=K-1
  194. 1910   IF K+8=0 THEN T=T-3 
  195. 1920   IF (LE=0 OR LE=12) AND (RI=0 OR RI=12) AND (OV=0 OR OV=12) AND                 (BL=0 OR BL=12) THEN T=T+3
  196. 1930 RETURN
  197. 1940 *HANTEI2
  198. 1950   XY(X,Y)=ME
  199. 1960   LOCATE 2*X+5,Y+8:PRINT ME
  200. 1970   IF X=1 THEN XY(9,Y)=ME ELSE IF X=8 THEN XY(0,Y)=ME
  201. 1980   IF Y=1 THEN XY(X,9)=ME ELSE IF Y=8 THEN XY(X,0)=ME
  202. 1990   IF POWER=0 AND PT=3 THEN T=T-2:PW=0
  203. 2000   IF POWER>1 THEN T=T*POWER:PW=0:POWER=0 
  204. 2010   IF POWER=1 THEN T=T-1:PW=0:POWER=0
  205. 2020   IF PL=1 THEN T1=T1+T ELSE T2=T2+T
  206. 2030 RETURN
  207. 2040 *SIYOU
  208. 2050   KT1=0:KT2=0:KT3=0
  209. 2060   FOR ME=1 TO 6 STEP 1
  210. 2070     KT=0
  211. 2080     FOR X=1 TO 8 STEP 1
  212. 2090       FOR Y=1 TO 8 STEP 1
  213. 2100         IF XY(X,Y)=0 GOSUB *HANTEI1
  214. 2110         IF T>KT THEN KT=T
  215. 2120       NEXT Y
  216. 2130     NEXT X
  217. 2140     IF KT>0 KT1=KT1+1
  218. 2150     IF KT>1 KT2=KT2+1
  219. 2160     IF KT>2 KT3=KT3+1
  220. 2170   NEXT ME
  221. 2180   IF KT3>1 AND KT2>3 AND KT1=6 THEN PUS=0 ELSE PUS=1
  222. 2190   IF T1-TC>11 AND N>M-6 AND KT3>0 AND KT2>2 THEN PUS=0
  223. 2200   IF TC-T1>0 AND KT2=6 THEN PUS=0
  224. 2210   IF N=M-1 AND T1-TC>0 AND KT3>1 PUS=0
  225. 2220 RETURN
  226. 2230 *STAZEA
  227. 2240   FOR STA=1 TO 3 STEP 1
  228. 2250     PLA=1:TC=-5:IF T1<TC THEN STA=1
  229. 2260     IF T1=TC AND STA>1 THEN STA=STA-1
  230. 2270     CLS 0:GOSUB *MAIN
  231. 2280   NEXT STA
  232. 2290   LOCATE 40,9:PRINT "CLEAR"
  233. 2300 RETURN
  234. 2310 *STAZEB
  235. 2320   IF LEV$="E" THEN GOSUB *E
  236. 2330   IF LEV$="N" THEN GOSUB *N
  237. 2340   IF LEV$="H" THEN GOSUB *H
  238. 2350   LOCATE 40,9:PRINT "CLEAR"
  239. 2360 RETURN
  240. 2370 *PPPLAY
  241. 2380   P1T=0:P2T=0
  242. 2390   FOR STIL=1 TO MEN
  243. 2400     CLS 0
  244. 2410     STA=STIN(STIL):GOSUB *MAIN
  245. 2420     IF T1>T2 THEN P1T=P1T+1
  246. 2430     IF T2>T1 OR TC>T1 THEN P2T=P2T+1
  247. 2440     LOCATE 40,9:PRINT"P1 "P1T" 対  P2 "P2T
  248. 2450     FOR LOOP%=0 TO 30000 :NEXT LOOP%
  249. 2460     IF P2T-P1T>MEN-STIL THEN LOCATE 40,11:PRINT "P2 WIN":STIL=MEN
  250. 2470     IF P1T-P2T>MEN-STIL THEN LOCATE 40,11:PRINT "P1 WIN":STIL=MEN
  251. 2480     IF P1T=P2T AND MEN=STIL THEN LOCATE 40,11:PRINT"引き分け"
  252. 2490   NEXT STIL
  253. 2500 RETURN 
  254. 2510 *E
  255. 2520   FOR STA=4 TO 9 STEP 1
  256. 2530     TC=0:PLA=1:IF T1<TC THEN STA=4 
  257. 2540     IF T1=TC AND STA>4 THEN STA=STA-1
  258. 2550     CLS 0 :GOSUB *MAIN
  259. 2560   NEXT STA
  260. 2570 RETURN
  261. 2580 *N 
  262. 2590   FOR STA=4 TO 9 STEP 1
  263. 2600     TC=10:PLA=1:IF T1<TC THEN STA=STA-1 
  264. 2610     IF T1=TC AND STA>4 THEN STA=STA-1 
  265. 2620     CLS 0:GOSUB *MAIN
  266. 2630   NEXT STA
  267. 2640 RETURN 
  268. 2650 *H
  269. 2660   FOR STA=4 TO 9 STEP 1
  270. 2670     TC=20:PLA=1:IF T1<TC THEN STA=STA-1
  271. 2680     IF T1=TC AND STA>4 THEN STA=STA-1
  272. 2690     CLS 0:GOSUB *MAIN
  273. 2700   NEXT STA
  274. 2710 RETURN 
  275.